package com.Mt.Controller;

import com.Mt.Dto.Dto;
import com.Mt.Service.Mt_SignService;
import com.Mt.Utils.DtoUtil;
import com.Mt.pojo.Mt_Sign;
import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("Sign")//测试
public class Mt_SignController {
    //服务对象
    @Reference
    private Mt_SignService mt_SignService;

    //查询用户剩余的积分
    @GetMapping("sign/{signId}")
    public Dto sign(@PathVariable("signId") String signId) {
        Mt_Sign mt_Sign = mt_SignService.queryById(signId);
        if (mt_Sign != null) {
            return DtoUtil.returnSuccessData(mt_Sign);
        } else {
            return DtoUtil.returnError(5001, "没有该用户数据");
        }
    }

    //点击签到功能
    @GetMapping("in/{signId}")
    public Dto in(@PathVariable("signId") String signId) {
        //这个方法就是判断它今天有没有签到，如果说，今天签到了，我们就查询的
        List<Mt_Sign> result = mt_SignService.seltime(signId);
        if (result.isEmpty()) {
            //没有查到，isEmpty返回true，我们说他今天没有签到
            //程序走到这里就是今天不允许进行签到功能（每天只能签到一次）
            //我们首先给用户的签到次数增加一条(这个是一定要增加的，只是记录他的签到次数)
            mt_SignService.lastedById(signId);
            //然后我们进行判断用户的连续签到的次数，如果说用户的连续签到次数大于或者等于7次，我们就给用户增加9个积分
            Mt_Sign mt_Sign = mt_SignService.daysById(signId);
            if (mt_Sign.getSignDays() >= 7) {
                //这个时候我们应该给用户的积分增加9分
                mt_SignService.addIntegralById(signId);
                //增加之后应该就把他的连续签到次数归零
                mt_SignService.zero(signId);
                //修改最后签到时间为当前系统时间
                mt_SignService.Updata(signId);
                //如果说用户的连续签到日期大于0小于7，我们就给用户增加一个积分，并且在用户的连续签到表中增加一条记录
            } else if (mt_Sign.getSignDays() < 7 && mt_Sign.getSignDays() >= 0) {
                //给用户的积分增加一分
                mt_SignService.IntegralById(signId);
                //给用户的连续签到增加一条记录
                mt_SignService.addsigndaysById(signId);
                //修改最后签到时间为当前系统时间
                mt_SignService.Updata(signId);
            }
            return DtoUtil.returnSuccess();
        } else {
            //用户今日已经签到完毕，不能再签到
            return DtoUtil.returnError(4001, "您今日已经签到，请明日来签");
        }
    }

    //查询连续签到天数
    @GetMapping("days/{signId}")
    public Dto days(@PathVariable("signId") String signId) {
        Mt_Sign mt_Sign = mt_SignService.daysById(signId);
        return  DtoUtil.returnSuccessData(mt_Sign);
    }

    //新的用户自动添加一条积分数据
   @GetMapping("newsign/{signId}")
   public Dto newsign(@PathVariable("signId") String signId) {

         int result =mt_SignService.newSign(signId);
         if (result>0) {
             return  DtoUtil.returnSuccess();
         }else {
             return DtoUtil.returnError(5001,"错误");
         }
   }

}
